/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.bld.modulo.web.bean.consulta;

import br.com.bld.model.query.consultaweb.ConsultaWebPb;
import br.com.bld.model.query.consultaweb.QueryBe;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Map;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Named;

/**
 *
 * @author Pedro
 */
@Named(value = "consultaWebSessionBean")
@ManagedBean
@SessionScoped
public class ConsultaWebSessionBean implements Serializable{
    
    private String palavraChave = "";
    private String cidade = "Aquidauana";
    private String uf = "MS";
    private Integer pagina = 0;
    private Integer quantidade = 20;
    private String erro = "";
    private boolean hasNextPage;
    /**
     * Creates a new instance of ConsultaWebSessionBean
     */
    public ConsultaWebSessionBean() {
    }
    
    public Collection<ConsultaWebPb> getConsultaWeb() {
         
        Collection<ConsultaWebPb> resposta = null;
        erro = "";
       
        try
        {
            setarPalavraChave();
            
            QueryBe be = new QueryBe();
            
            //resposta = be.consultar(palavraChave, cidade, uf,  pagina, quantidade);
            
            resposta = be.consultar(palavraChave, pagina, quantidade);
            
            hasNextPage = resposta.size() == quantidade;
            
            be.close();
        }
        catch(SQLException e) {
            
            StringBuilder str = new StringBuilder();
            
            str.append(e.getMessage());
            for(StackTraceElement s: e.getStackTrace()) {
                str.append(s.toString()).append("\n");
            }
            
            setErro(str.toString());
        }
        
        return resposta;
    }
    
    /**
     * @return the palavraChave
     */
    public String getPalavraChave() {
        return palavraChave;
    }

    /**
     * @param palavraChave the palavraChave to set
     */
    public void setPalavraChave(String palavraChave) {
        this.palavraChave = palavraChave;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

    /**
     * @param cidade the cidade to set
     */
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    /**
     * @return the uf
     */
    public String getUf() {
        return uf;
    }

    /**
     * @param uf the uf to set
     */
    public void setUf(String uf) {
        this.uf = uf;
    }

    /**
     * @return the pagina
     */
    public Integer getPagina() {
        return pagina;
    }

    /**
     * @param pagina the pagina to set
     */
    public void setPagina(Integer pagina) {
        this.pagina = pagina;
    }

    /**
     * @return the quantidade
     */
    public Integer getQuantidade() {
        return quantidade;
    }

    /**
     * @param quantidade the quantidade to set
     */
    public void setQuantidade(Integer quantidade) {
        this.quantidade = quantidade;
    }

    /**
     * @return the erro
     */
    public String getErro() {
        return erro;
    }

    /**
     * @param erro the erro to set
     */
    public void setErro(String erro) {
        this.erro = erro;
    }

    /**
     * @return the hasNextPage
     */
    public boolean getHasNextPage() {
        return hasNextPage;
    }

    /**
     * @param hasNextPage the hasNextPage to set
     */
    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }

    private void setarPalavraChave() {
        
        Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        
        if(params.get("palavraChave") != null)
            palavraChave = params.get("palavraChave");
    }
    
}
